package com.neu.fenli2023623.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.neu.fenli2023623.entity.FeeDetails;
import com.neu.fenli2023623.entity.ZyInformation;
import com.neu.fenli2023623.entity.Zycz;
import com.neu.fenli2023623.service.ZyczService;
import com.neu.fenli2023623.util.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/zycz")
public class ZyczController {

    @Autowired
    private ZyczService zyczService;

    //添加备注
    @RequestMapping("AddNote")
    public ResultVo zyczUpdate(@RequestBody Zycz zycz){
        int i = zyczService.updateAddNote(zycz);
        if (i>0){
            return ResultVo.ok("更新成功");
        }else {
            return ResultVo.ok("更新失败");
        }

    }
//    查询全部
    @RequestMapping("selectall")
    public ResultVo zyczSelect() {
        List<Map<String, Object>> zyczs = zyczService.selectAll();
        if (zyczs != null) {
            // 创建ZyczResult对象

            // 将ZyczResult对象转换为JSON格式
            ObjectMapper objectMapper = new ObjectMapper();
            String zyczResultJson = null;
            try {
                zyczResultJson = objectMapper.writeValueAsString(zyczs);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
                return ResultVo.error("转换JSON格式失败");
            }

            // 返回JSON格式数据给前端
            return ResultVo.ok("查找成功").data("zyczall",zyczResultJson);
        } else {
            return ResultVo.error("查找失败");
        }
    }

//    @RequestMapping("selectByDateRange")
//    public ResultVo zyczselectByDateRange(@RequestParam String startDate, @RequestParam String endDate) {
//        // 调用Service层方法，根据日期期间查询数据
//        List<Map<String, Object>> zyczs = zyczService.selectByDateRange(startDate, endDate);
//
//        if (zyczs != null) {
//            // 将查询结果转换为JSON格式
//            ObjectMapper objectMapper = new ObjectMapper();
//            String zyczResultJson;
//            try {
//                zyczResultJson = objectMapper.writeValueAsString(zyczs);
//            } catch (JsonProcessingException e) {
//                e.printStackTrace();
//                return ResultVo.error("转换JSON格式失败");
//            }
//
//            // 返回JSON格式数据给前端
//            return ResultVo.ok("查询成功").data("zyczselectByDateRange",zyczResultJson);
//        } else {
//            return ResultVo.error("查询失败");
//        }
//    }
    //这里的患者姓名和就诊卡号,住院号的参数就用那个输入框里的值传进来，赋一样的值就好,日期可为空
    @RequestMapping("selectByDateRangeOrPatient")
    public ResultVo zyczselectByDateRangeOrPatient(@RequestParam String startDate, @RequestParam String endDate,
                                        @RequestParam("patientName") String patientName,
                                        @RequestParam("cardNumber") String cardNumber,@RequestParam String zyId) {
        // 调用Service层方法，根据患者姓名或就诊卡号查询数据
        List<Map<String, Object>> zyczs = zyczService.selectByDateRangeOrPatient(startDate, endDate,patientName, cardNumber,zyId);

        if (zyczs != null) {
            // 将查询结果转换为JSON格式
            ObjectMapper objectMapper = new ObjectMapper();
            String zyczResultJson;
            try {
                zyczResultJson = objectMapper.writeValueAsString(zyczs);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
                return ResultVo.error("转换JSON格式失败");
            }

            // 返回JSON格式数据给前端
            return ResultVo.ok("查询成功").data("ByDateRangeOrPatient",zyczResultJson);
        } else {
            return ResultVo.error("查询失败");
        }
    }
//    //这里的患者姓名和就诊卡号的参数就用那个输入框里的值传进来，赋一样的值就好
//    @RequestMapping("selectByPatient")
//    public ResultVo zyczselectByPatient(@RequestParam("patientName") String patientName, @RequestParam("cardNumber") String cardNumber) {
//        // 调用Service层方法，根据患者姓名或就诊卡号查询数据
//        List<Map<String, Object>> zyczs = zyczService.selectByPatient(patientName, cardNumber);
//
//        if (zyczs != null) {
//            // 将查询结果转换为JSON格式
//            ObjectMapper objectMapper = new ObjectMapper();
//            String zyczResultJson;
//            try {
//                zyczResultJson = objectMapper.writeValueAsString(zyczs);
//            } catch (JsonProcessingException e) {
//                e.printStackTrace();
//                return ResultVo.error("转换JSON格式失败");
//            }
//
//            // 返回JSON格式数据给前端
//            return ResultVo.ok("查询成功").data("ByPatient",zyczResultJson);
//        } else {
//            return ResultVo.error("查询失败");
//        }
//    }


//查询住院信息，根据住院号
    @RequestMapping("selectZyInformationByZyid")
    public ResultVo selectZyInformationByZyid(@RequestParam String zyId) {
        // 调用Service层方法，根据mz_order_id查询数据
        List<ZyInformation> zyInformation = zyczService.selectZyInformation(zyId);


        if (zyInformation != null) {
            // 将查询结果转换为JSON格式
            ObjectMapper objectMapper = new ObjectMapper();
            String zyczResultJson;
            try {
                zyczResultJson = objectMapper.writeValueAsString(zyInformation);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
                return ResultVo.error("转换JSON格式失败");
            }
//            Logger logger
            // 返回查询结果给前端
            return ResultVo.ok("查询成功").data("ZyInformations",zyczResultJson);
        } else {
            return ResultVo.error("查询失败");
        }
    }



}
